package co.baiku.boot.v3.request;

import co.baiku.boot.v3.model.*;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.List;

/**
 * 创建支付分订单API
 * <pre>
 * 用户申请使用服务时，商户可通过此接口申请创建微信支付分订单。
 * </pre>
 */
public class WeixinPayScoreCreateOrderRequest extends WeixinPayScoreRequest {
    /**
     * [必填] 服务信息
     * <p>
     * 服务信息，用于介绍本订单所提供的服务 ，当参数长度超过20个字符时，报错处理。
     * <br/>
     * 示例值：某某酒店
     * </p>
     */
    @JsonProperty("service_introduction")
    private String serviceIntroduction;
    /**
     * [必填] 是否需要用户确认
     * <p>
     * 枚举值：<br/>
     * false：免确认订单<br/>
     * true：需确认订单<br/>
     * 示例值：true
     * </p>
     */
    @JsonProperty("need_user_confirm")
    private Boolean needUserConfirm;
    /**
     * [必填] 商户回调地址
     * <pre>
     * 商户接收用户确认订单或扣款成功回调通知的地址。
     * 示例值：https://api.test.com
     * </pre>
     */
    @JsonProperty("notify_url")
    private String notifyUrl;

    /**
     * 用户标识
     * <p>
     * 微信用户在商户对应appid下的唯一标识。<br/>
     * 免确认订单：必填<br/>
     * 需确认订单：不填
     * <br/>
     * 示例值：oUpF8uMuAJO_M2pxb1Q9zNjWeS6o
     * </p>
     */
    private String openid;
    /**
     * 商户数据包
     * <p>
     * 商户数据包可存放本订单所需信息，需要先urlencode后传入。 当商户数据包总长度超出256字符时，报错处理。<br/>
     * 示例值：Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald
     * </p>
     */
    private String attach;

    /**
     * 后付费项目
     * <p>后付费项目列表，最多包含100条付费项目。
     * 如果传入，用户侧则显示此参数。
     * </p>
     */
    @JsonProperty("post_payments")
    private List<WeixinPayScorePostPayment> postPayments;
    /**
     * 后付费商户优惠
     * <p>
     * 后付费商户优惠列表，最多包含30条商户优惠。
     * 如果传入，用户侧则显示此参数。
     * </p>
     */
    @JsonProperty("post_discounts")
    private List<WeixinPayScorePostDiscounts> postDiscounts;

    /**
     * [必填] 服务时间段
     * <p>服务时间范围
     * </p>
     */
    @JsonProperty("time_range")
    private WeixinPayScoreTimeRange timeRange;
    /**
     * 服务位置信息
     * 如果传入，用户侧则显示此参数。
     */
    private WeixinPayScoreLocation location;
    /**
     * [必填] 订单风险金	<p>
     * 订单风险金信息
     * </p>
     */
    @JsonProperty("risk_fund")
    private WeixinPayScoreRiskFund riskFund;

    public String getServiceIntroduction() {
        return serviceIntroduction;
    }

    public void setServiceIntroduction(String serviceIntroduction) {
        this.serviceIntroduction = serviceIntroduction;
    }

    public String getAttach() {
        return attach;
    }

    public void setAttach(String attach) {
        this.attach = attach;
    }

    public Boolean getNeedUserConfirm() {
        return needUserConfirm;
    }

    public void setNeedUserConfirm(Boolean needUserConfirm) {
        this.needUserConfirm = needUserConfirm;
    }

    public String getNotifyUrl() {
        return notifyUrl;
    }

    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }

    public String getOpenid() {
        return openid;
    }

    public void setOpenid(String openid) {
        this.openid = openid;
    }

    public List<WeixinPayScorePostPayment> getPostPayments() {
        return postPayments;
    }

    public void setPostPayments(List<WeixinPayScorePostPayment> postPayments) {
        this.postPayments = postPayments;
    }

    public List<WeixinPayScorePostDiscounts> getPostDiscounts() {
        return postDiscounts;
    }

    public void setPostDiscounts(List<WeixinPayScorePostDiscounts> postDiscounts) {
        this.postDiscounts = postDiscounts;
    }

    public WeixinPayScoreTimeRange getTimeRange() {
        return timeRange;
    }

    public void setTimeRange(WeixinPayScoreTimeRange timeRange) {
        this.timeRange = timeRange;
    }

    public WeixinPayScoreLocation getLocation() {
        return location;
    }

    public void setLocation(WeixinPayScoreLocation location) {
        this.location = location;
    }

    public WeixinPayScoreRiskFund getRiskFund() {
        return riskFund;
    }

    public void setRiskFund(WeixinPayScoreRiskFund riskFund) {
        this.riskFund = riskFund;
    }
}
